#define _CRT_SECURE_NO_WARNINGS

#include <iostream>
using namespace std;

//template<class a, typename b>
//template<typename a, b>
//void func(a b)
//{}
//
//int main()
//{
//	char* a = new char[10];
//	delete a;
//	return 0;
//}

//int main()
//{
//	string a = "hello world";
//	string b = a;
//	
//	cout << a.c_str() << b.c_str() << endl;
//	if (a.c_str() == b.c_str())
//	{
//		cout << "true" << endl;
//	}
//	else cout << "false" << endl;
//
//	string c = b;
//	c = "";
//	cout << a.c_str() << b.c_str() << endl;
//	if (a.c_str() == b.c_str())
//	{
//		cout << "true" << endl;
//	}
//	else cout << "false" << endl;
//
//	a = "";
//	cout << a.c_str() << b.c_str() << endl;
//	if (a.c_str() == b.c_str())
//	{
//		cout << "true" << endl;
//	}
//	else cout << "false" << endl;
//	return 0;
//}


//string addStrings(string num1, string num2)
//{
//    int end1 = num1.size() - 1;
//    int end2 = num2.size() - 1;
//    int pos = 0;
//    string str;
//    while (end1 >= 0 || end2 >= 0)
//    {
//        int val1 = end1 >= 0 ? num1[end1] - '0' : 0;
//        int val2 = end2 >= 0 ? num2[end2] - '0' : 0;
//        int ret = val1 + val2 + pos;
//        pos = ret / 10;
//        ret %= 10;
//        str.insert(str.begin(), ret + '0');
//        end1--;
//        end2--;
//    }
//    if (pos == 1)
//    {
//        str.insert(str.begin(), '1');
//    }
//    return str;
//}
//
//int main()
//
//{
//
//	string str2("123");
//    string str1("11");
//    cout << addStrings(str1, str2) << endl;
//    
//
//	return 0;
//
//}

//int main()
//{
//	int a = -1;
//	int arr[5] = { 1, 2, 3, 4, 5};
//	int val = a >= 0 ? arr[-10] : 0;
//	return 0;
//}

//int main()
//{
//    string s = "aabb";
//    int i = 0;
//    int pass = 0;
//    for (auto e : s)
//    {
//        if (e == '\0')
//        {
//            break;
//        }
//        size_t pos = s.find(e, i + 1);
//        if (pos == std::string::npos)
//        {
//            cout << i << endl;
//            return 0;
//        }
//        else
//        {
//            s.erase(pos, 1);
//        }
//        i++;
//    }
//    cout << -1 << endl;
//	return 0;
//}

bool isPalindrome(string s)
{
    int i = 0;
    for (auto& e : s)
    {
        if (e - 'A' >= 0 && e - 'A' <= 27)
        {
            e += 32;
            i++;
        }
        else if (e - '0' >= 0 && e - '9' <= 9)
        {
            i++;
        }
        else if (e - 'a' >= 0 && e - 'a' <= 27)
        {
            i++;
        }
        else
        {
            s.erase(i, 1);
        }
    }
    int begin = 0;
    int end = s.size() - 1;
    while (begin < end)
    {
        if (s[begin] != s[end])
            return false;
        begin++;
        end--;
    }
    return true;
}

int main()
{
    string str = "A man, a plan, a canal: Panama";
    cout << isPalindrome(str) << endl;
    return 0;
}

//int main()
//{
//	char arr[20] = "A man, a plan";
//	for (auto& e : arr)
//	{
//		e++;
//	}
//	return 0;
//}